import { _decorator, Component, Label, Node, tween, Vec3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('EndPanelController')
export class EndPanelController extends Component {

    // 分数
    @property(Label)
    score: Label = null;
    // 最高分
    @property(Label)
    bestScore: Label = null;

    // 整个面板内容的父节点
    // 用于动画, 从下往上弹出
    // 有一个遮挡层, 避免点击穿透, 这个层是content的兄弟节点,是不能动的.
    @property(Node)
    content: Node = null;

    onRestartListener: Function[] = [];

    start() {

    }

    update(deltaTime: number) {
        
    }

    /**
     * 
     * @param score 分数
     * @param bestScore 最高分
     */
    init(score: number, bestScore: number) {
        this.score.string = score.toString();
        this.bestScore.string = bestScore.toString();
        this.content.setPosition(new Vec3(0, -2000, 0));
        tween(this.content)
        .delay(0.7)
        .to(0.2, {position: new Vec3(0, 0, 0)}).start();
    }

    /**
     * 用户点击重新开始,触发回调
     */
    onRestart(){
        this.onRestartListener.forEach((callback) => {
            callback();
        });
        tween(this.content).to(0.3, {position: new Vec3(0, -2000, 0)})
        .delay(0.2)
        .call(() => {
            this.node.destroy();
        })
        .start();
    }

    /**
     * 
     * @param callback 添加重新开始回调,用于给外部调用
     */
    addOnRestartListener(callback: Function) {
        this.onRestartListener.push(callback);
    }
}


